<?php

/** Crear la tabla

CREATE TABLE `archivos` (
  `id_archivo` int(10) unsigned NOT NULL auto_increment,
  `name` varchar(200) default NULL,
  `size` bigint(20) default NULL,
  `mime_type` varchar(80) default NULL,
  `folder` varchar(200) default NULL,
  `id_persona` int(11) default '0',
  `ip_address` varchar(20) default NULL,
  `id_carpeta` int(11) default '0',
  `stamp` datetime default NULL,
  PRIMARY KEY  (`id_archivo`)
) ENGINE=MyISAM AUTO_INCREMENT=71 DEFAULT CHARSET=latin1;

*/

class Archivo {
	
	var $lasterror;
	var $error;
	var $folder;
	
	
	function Archivo()
    {
		//parent::__construct();
		$this->folder = UPLOADDIR;
		$this->lasterror = "";
		$this->error = 0;
    }
	
	function Eliminar($idarchivo) {
		$result = mysql_query("SELECT * FROM archivos WHERE id_archivo = '$idarchivo';");
		if($result && mysql_num_rows($result)>0) {
			$miarchivo = mysql_fetch_array($result);
			@unlink($miarchivo['folder'].$miarchivo['name']);	
			mysql_query("DELETE FROM archivos WHERE id_archivo = '$idarchivo'");
		}
	}
	
	function getLastError() {
		return $this->lasterror;	
	}
	
	function isOk() {
		return $this->error==0;
	}
	
	function getNewName($nombrearchivo) {
		if(strpos($nombrearchivo,".php")!==false) {
			$nombrearchivo = str_replace(".php","_",$nombrearchivo).".txt";
		}
		$nombrearchivo = str_replace(" ","_",$nombrearchivo);
		
		if(strpos($nombrearchivo,".")===false) $nombrearchivo.=".dat";
		$partes = explode(".",$nombrearchivo);
		$extension = end($partes);
		$nombre = "";
		foreach($partes as $k) if($k!=$extension) $nombre.=$k;
		$i=0;
		$fullname = $nombre.".".$extension;	
		while(file_exists($this->folder.$fullname)) {
			$i++;
			$fullname = $nombre.$i.".".$extension;
		}
		return $fullname;
	}
	
	
	function getUpload() {
		$file = $_FILES['archivo'];		
		if(empty($file['name'])) {
			$this->error=1;
			$this->lasterror = "Debe especificar un archivo";
			return false;
		}
		$this->error = intval($file['error']);
		if($this->error==0) {	
			$name = $this->getNewName($file['name']);
			// post
			$id_persona = isset($_POST['id_persona'])?intval($_POST['id_persona']):0;
			$id_carpeta = isset($_POST['id_carpeta'])?intval($_POST['id_carpeta']):0;			
			$es_privado = isset($_POST['es_privado'])?intval($_POST['es_privado']):0;
			if($id_carpeta==0) {
				$this->error=1;
				$this->lasterror = "Debe especificar una carpeta";	
				return false;
			}
			$mime_type = $file['type'];
			$size = $file['size'];
			if(intval($size)==0) {
				$this->lasterror  = "El archivo esta vacio";
				$this->error = 1;
				return false;	
			}
			$tmp_name = $file['tmp_name'];
			if(empty($tmp_name)) {
				$this->lasterror  = "El archivo esta vacio";
				$this->error = 1;
				return false;	
			}
			if(file_exists($this->folder.$name)) @unlink($this->folder.$name);
			copy($file['tmp_name'],$this->folder.$name);						
			$query = "INSERT INTO archivos (
								name,
								folder,
								mime_type,
								stamp,
								ip_address,
								id_carpeta,
								id_persona,
								es_privado,
								size
							) VALUES (
								'$name',
								'".$this->folder."',
								'$mime_type',
								CURRENT_TIMESTAMP,
								'".$_SERVER['REMOTE_ADDR']."',
								'$id_carpeta',
								'$id_persona',
								'$es_privado',
								'$size'
								);";
			mysql_query($query);
			return true;
		}		
		return false;
	}
}
?>